package project.background.service;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import fld.background.service.UserService;
import fld.background.system.service.impl.BaseServiceImpl;
import fld.utils.Common;
import fld.utils.DataGrid;
import fld.utils.Page;
import fld.utils.Result;
import project.background.dto.CompanyInfoDto;
import project.background.entity.CompanyInfo;

/**
 * 企业简介service
 * @author yc
 * 2018年12月5日
 */
@Service
public class CompanyInfoService extends BaseServiceImpl<CompanyInfo,Long>{
	
	@Autowired
	private UserService userService;
	
	private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
	
	private SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd");
	
	/**
	 * 数据列表
	 * @param tmap
	 * @return
	 * 2018年8月17日
	 * @author yc
	 */
	public DataGrid grid(Map<String,Object> tmap){
		if("".equals(Common.nullToEmpty(tmap.get("companyId")))) {
			tmap.put("companyId", userService.getCurUser().getCompanyId());
		}else {
			tmap.put("companyId", Long.parseLong(tmap.get("companyId").toString()));
		}
		
		Page<CompanyInfo> page = queryForPage(CompanyInfoDto.class, tmap);
		List<Map<String,Object>> rows = new ArrayList<Map<String,Object>>();
		List<CompanyInfo> res = page.getRows();
		for (CompanyInfo t : res) {
			Map<String,Object> map = new HashMap<String,Object>();
			map.put("id", t.getId());
			map.put("createTime", sdf.format(t.getCreateTime()));
			map.put("companyId", t.getCompanyId());
			map.put("publishDate", sdfd.format(t.getPublishDate()));
			map.put("brief", t.getBrief());
			map.put("lxr", t.getLxr());
			map.put("lxdh", t.getLxdh());
			map.put("lxyx", t.getLxyx());
			map.put("xxdz", t.getXxdz());
			map.put("jd", t.getJd());
			map.put("wd", t.getWd());
			map.put("pv", t.getPv());
			rows.add(map);
		}
		DataGrid dg = new DataGrid();
		dg.setTotal(page.getTotal());
		dg.setRows(rows);
		dg.setTotalPage(page.getPageCount());
		return dg;
	}
	
	/**
	 * 保存
	 * @param t
	 * @return
	 * @author yc
	 * @date 2017年4月13日
	 */
	public Result saveObj(CompanyInfo t){
		if("".equals(Common.nullToEmpty(t.getId()))){
			Long companyId = userService.getCurUser().getCompanyId();
			if(null  == companyId) {
				return new Result(false,"没有操作权限");
			}else {
				t.setCompanyId(companyId);
			}
			t.setPv(0);
			save(t);
		}else{
			CompanyInfo old = getDao().get(t.getId());
			if(null != old) {
				old.setDetails(t.getDetails());
				old.setPublishDate(t.getPublishDate());
				old.setBrief(t.getBrief());
				old.setLxr(t.getLxr());
				old.setLxdh(t.getLxdh());
				old.setLxyx(t.getLxyx());
				old.setXxdz(t.getXxdz());
				old.setJd(t.getJd());
				old.setWd(t.getWd());
				old.setFwcn(t.getFwcn());
				save(old);
			}else {
				return new Result(false,"该记录不存在！");
			}
		}
		return new Result(true);
	}
	
	/**
	 * 根据id获取详情
	 * @param id
	 * @return
	 * @author yc
	 * @date 2017年4月13日
	 */
	public Map<String,Object> getInfo(Long id){
		return getInfo(getDao().get(id));
	}
	
	/**
	 * 获取对象详情
	 * @param t
	 * @return
	 * 2018年8月3日
	 * @author yc
	 */
	public Map<String,Object> getInfo(CompanyInfo t){
		Map<String,Object> map = new HashMap<String,Object>();
		if(null != t){
			map.put("id", t.getId());
			map.put("companyId", t.getCompanyId());
			map.put("publishDate", sdfd.format(t.getPublishDate()));
			map.put("brief", t.getBrief());
			map.put("details", t.getDetails());
			map.put("lxr", t.getLxr());
			map.put("lxdh", t.getLxdh());
			map.put("lxyx", t.getLxyx());
			map.put("xxdz", t.getXxdz());
			map.put("jd", t.getJd());
			map.put("wd", t.getWd());
			map.put("pv", t.getPv());
			map.put("fwcn", t.getFwcn());
		}
		return map;
	}
	
	/**
	 * 单个删除
	 * @param id
	 * @return
	 * @author yc
	 * @date 2017年4月13日
	 */
	public Result deleteById(Long id){
		CompanyInfo t = getDao().get(id);
		if(null != t){
			t.setIsdeleted(true);
			save(t);
		}else {
			return new Result(false,"1");
		}
		return new Result(true);
	}
	
	/**
	 * 获取最新企业简介
	 * @param companyId
	 * @return
	 * 2019年1月11日
	 * @author yc
	 */
	public CompanyInfo getNewEstCompanyInfoByCompanyId(Long companyId) {
		Map<String,Object> tmap = new HashMap<String,Object>();
		tmap.put("companyId", companyId);
		List<CompanyInfo> page = query(CompanyInfoDto.class, tmap);
		return page.isEmpty() ? null : page.get(0);
	}
}
